<?php

/**
 * @file
 * Currency hook implementations.
 */

/**
 * Implements hook_currency_info().
 */
function currency_currency_info() {
  $currencies = array();
  foreach (Currency::resourceListAll() as $currency_code) {
    $currency = new Currency();
    $currency->resourceLoad($currency_code);
    $currencies[$currency->ISO4217Code] = $currency;
  }

  return $currencies;
}

/**
 * Implements hook_currency_exchanger_info().
 */
function currency_currency_exchanger_info() {
  $currency_exchangers['CurrencyExchanger'] = array(
    'exchanger' => array(
      'class' => 'CurrencyExchanger',
      'file' => 'includes/CurrencyExchanger.inc',
    ),
    'title' => t('All exchangers'),
  );
  $currency_exchangers['CurrencyExchangerFixedRates'] = array(
    'exchanger' => array(
      'class' => 'CurrencyExchangerFixedRates',
      'file' => 'includes/CurrencyExchangerFixedRates.inc',
    ),
    'description' => t('Manually entered fixed exchange rates.'),
    'title' => t('Fixed rates'),
  );
  $currency_exchangers['CurrencyExchangerBartFeenstraCurrency'] = array(
    'exchanger' => array(
      'class' => 'CurrencyExchangerBartFeenstraCurrency',
      'file' => 'includes/CurrencyExchangerBartFeenstraCurrency.inc',
    ),
    'description' => t('Mostly historical rates that do not fluctuate.'),
    'title' => t('Historical rates'),
  );

  return $currency_exchangers;
}

/**
 * Implements hook_currency_locale_pattern_info().
 */
function currency_currency_locale_pattern_info() {
  $locale_patterns = array(
    new CurrencyLocalePattern(array(
      'locale' => 'aa_DJ',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'aa_ER',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'aa_ET',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'af_NA',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'af_ZA',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ak_GH',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'am_ET',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_AE',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_BH',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_DJ',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_DZ',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_EG',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_EH',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_ER',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_IL',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_IQ',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_JO',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_KM',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_KW',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_LB',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_LY',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_MA',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_MR',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_OM',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_PS',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_QA',
      'pattern' => '¤#0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_SA',
      'pattern' => '¤#0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_SD',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_SO',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_SY',
      'pattern' => '¤#0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_TD',
      'pattern' => '¤ #0.00;¤ #0.00-',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_TN',
      'pattern' => '¤#0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ar_YE',
      'pattern' => '¤#0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'as_IN',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'be_BY',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'bg_BG',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'bm_ML',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'bn_BD',
      'pattern' => '#,##,##0.00¤;(#,##,##0.00¤)',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'bn_IN',
      'pattern' => '#,##,##0.00¤;(#,##,##0.00¤)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'bo_CN',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'bo_IN',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ca_AD',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ca_ES',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'cs_CZ',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'cy_GB',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'da_DK',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'de_AT',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'de_BE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'de_CH',
      'pattern' => '¤ #,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => "'",
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'de_DE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'de_LI',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => "'",
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'de_LU',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'dz_BT',
      'pattern' => '¤#,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ee_GH',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ee_TG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'el_CY',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'el_GR',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_AG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_AS',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_AU',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_BB',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_BE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_BM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_BS',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_BW',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_BZ',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_CA',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_CM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_DM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_FJ',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_FM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GB',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GD',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GH',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GI',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GU',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_GY',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_HK',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_IE',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_IM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_IN',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_JE',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_JM',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_KE',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_KI',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_KN',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_KY',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_LC',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_LR',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_LS',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_MG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_MH',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_MP',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_MT',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_MU',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_MW',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_NA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_NG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_NZ',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_PG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_PH',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_PK',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_PR',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_PW',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_SB',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_SC',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_SG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_SL',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_SS',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_SZ',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_TC',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_TO',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_TT',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_TZ',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_UG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_UM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_US',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_VC',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_VG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_VI',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_VU',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_WS',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_ZA',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_ZM',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'en_ZW',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_AR',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_BO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_CL',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_CO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_CR',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_CU',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_DO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_EA',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_EC',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_ES',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_GQ',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_GT',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_HN',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_IC',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_MX',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_NI',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_PA',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_PE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_PH',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_PR',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_PY',
      'pattern' => '¤ #,##0.00;¤ -#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_SV',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_US',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_UY',
      'pattern' => '¤ #,##0.00;(¤ #,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'es_VE',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'et_EE',
      'pattern' => '#0.00¤;(#0.00¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'eu_ES',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fa_AF',
      'pattern' => '‎¤#,##0.00;‎(¤#,##0.00)',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fa_IR',
      'pattern' => '‎¤#,##0.00;‎(¤#,##0.00)',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ff_SN',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fi_FI',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fo_FO',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_BE',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_BF',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_BI',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_BJ',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_BL',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CA',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CD',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CF',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CG',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CH',
      'pattern' => '¤ #,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => "'",
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CI',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_CM',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_DJ',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_DZ',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_FR',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_GA',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_GF',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_GN',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_GP',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_GQ',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_HT',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_KM',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_LU',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MA',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MC',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MF',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MG',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_ML',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MQ',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MR',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_MU',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_NC',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_NE',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_PF',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_RE',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_RW',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_SC',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_SN',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_SY',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_TD',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_TG',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_TN',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_VU',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'fr_YT',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ga_IE',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'gd_GB',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'gl_ES',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'gu_IN',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'gv_GB',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'he_IL',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'hi_IN',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'hr_BA',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'hr_HR',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'hu_HU',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'hy_AM',
      'pattern' => '#0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'id_ID',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ig_NG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'is_IS',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'it_CH',
      'pattern' => '¤ #,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => "'",
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'it_IT',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'it_SM',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ja_JP',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ka_GE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ki_KE',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'kl_GL',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'km_KH',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'kn_IN',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ko_KP',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ko_KR',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'kw_GB',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'lg_UG',
      'pattern' => '#,##0.00¤',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ln_AO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ln_CD',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ln_CF',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ln_CG',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'lo_LA',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'lt_LT',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'lu_CD',
      'pattern' => '#,##0.00¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'lv_LV',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'mg_MG',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'mk_MK',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ml_IN',
      'pattern' => '#,##,##0.00¤',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'mr_IN',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ms_BN',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ms_MY',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ms_SG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'mt_MT',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'my_MM',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nb_NO',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nd_ZW',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nl_AW',
      'pattern' => '¤ #,##0.00;¤ #,##0.00-',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nl_BE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nl_CW',
      'pattern' => '¤ #,##0.00;¤ #,##0.00-',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nl_NL',
      'pattern' => '¤ #,##0.00;¤ #,##0.00-',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nl_SR',
      'pattern' => '¤ #,##0.00;¤ #,##0.00-',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nl_SX',
      'pattern' => '¤ #,##0.00;¤ #,##0.00-',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nn_NO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'nr_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'om_ET',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'om_KE',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'or_IN',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'os_GE',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'os_RU',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pl_PL',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ps_AF',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => '٫',
      'symbol_grouping_separator' => '٬',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_AO',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_BR',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_CV',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_GW',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_MO',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_MZ',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_PT',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_ST',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'pt_TL',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'rm_CH',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '’',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'rn_BI',
      'pattern' => '#,##0.00¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ro_MD',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ro_RO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ru_BY',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ru_KG',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ru_KZ',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ru_MD',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ru_RU',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ru_UA',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'se_FI',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'se_NO',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sg_CF',
      'pattern' => '¤#,##0.00;¤-#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'si_LK',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sk_SK',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sl_SI',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sn_ZW',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'so_DJ',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'so_ET',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'so_KE',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'so_SO',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sq_AL',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sq_MK',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ss_SZ',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ss_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'st_LS',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'st_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sv_AX',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sv_FI',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sv_SE',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sw_KE',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sw_TZ',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'sw_UG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ta_IN',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ta_LK',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ta_MY',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ta_SG',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'te_IN',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'th_TH',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ti_ER',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ti_ET',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'tn_BW',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'tn_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'to_TO',
      'pattern' => '¤ #,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'tr_CY',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'tr_TR',
      'pattern' => '#,##0.00 ¤;(#,##0.00 ¤)',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ts_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'uk_UA',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ur_IN',
      'pattern' => '¤ #,##,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'ur_PK',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 've_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'vi_VN',
      'pattern' => '#,##0.00 ¤',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => '.',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'xh_ZA',
      'pattern' => '¤#,##0.00',
      'symbol_decimal_separator' => ',',
      'symbol_grouping_separator' => ' ',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'yo_NG',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => '',
    )),
    new CurrencyLocalePattern(array(
      'locale' => 'zu_ZA',
      'pattern' => '¤#,##0.00;(¤#,##0.00)',
      'symbol_decimal_separator' => '.',
      'symbol_grouping_separator' => ',',
    )),
  );

  // Key patterns by their locales, which act as their machine names.
  $locale_patterns_keyed = array();
  foreach ($locale_patterns as $locale_pattern) {
    $locale_patterns_keyed[$locale_pattern->locale] = $locale_pattern;
  }

  return $locale_patterns_keyed;
}
